package ms.platform.upload.service;

import java.io.File;
import java.util.Date;

import ms.platform.util.MD5Util;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

@Service
@Transactional(propagation=Propagation.SUPPORTS)
public class UploadService {
	
	/**
	 * 文件上传
	 * @param file 文件
	 * @param path 文件保存的路径
	 * @param fileType 文件后缀名
	 * @return 加密后的文件名
	 */
	public String fileUpload(MultipartFile file, String path, String fileType) throws Exception{
		
		/*
		 * *****这里有个坑******
		 * 使用transferTo时，path的‘文件夹路径’必须存在，否则报文件路径不存在错误，所以先创建文件夹路径
		 */
		File oldFile = new File(path);
		if (!oldFile.exists() && !oldFile.isDirectory()) {
			oldFile.mkdir();
		}
		
		/*
		 * 生成文件名(md5加密当前时间)
		 */
		long time = new Date().getTime();
		String md5Name = MD5Util.string2MD5(String.valueOf(time));
		String fileName = "";//文件名
		if (fileType != null && !"".equals(fileType)) {
			fileName = md5Name + "." + fileType;
		}else{
			fileName = md5Name;
		}
		
		file.transferTo(new File(path + File.separator + fileName));
		
		return fileName;
	}
}
